/*
 * Projeto Casamento
 * 
 * Versao: 0.0.1
 * Autor: Cristiano Lima
 * Data: 01/11/2012
 * 
 * Copyright (C) 2012-2013
 */
package casamento.controle;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.servlet.ServletContext;

import org.primefaces.event.CellEditEvent;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import org.primefaces.model.UploadedFile;

import casamento.Bean.EstabelecimentoBean;
import casamento.Bean.ImagenBean;
import casamento.Bean.TipoEstabelecimento;
import casamento.DAO.EstabelecimentoDAO;
import casamento.DAO.ImagemDAO;
import casamento.DAO.SegmentoDAO;
import casamento.util.BuscarPorCEP;
import casamento.util.CepWebService;
import casamento.util.Validar;

/**
 * Classe que controla os estabelecimentos.
 * 
 * @author Cristiano Lima
 * 
 */
@ManagedBean(name = "estabelecimentoMB")
@SessionScoped
public class EstabelecimentoMB {

	EstabelecimentoBean 	  estabelecimento 		= new EstabelecimentoBean();
	EstabelecimentoBean       mostrarEstabelecimento= new EstabelecimentoBean();
	EstabelecimentoBean 	  estab                 = new EstabelecimentoBean();
	List<EstabelecimentoBean> listaEstabelecimento  = new ArrayList<EstabelecimentoBean>();
	List<EstabelecimentoBean> resultadoPesquisa     = new ArrayList<EstabelecimentoBean>();
	List<EstabelecimentoBean> resultadoPesquisaAtivos     = new ArrayList<EstabelecimentoBean>();
	List<EstabelecimentoBean> listaNomeAutoComplete = new ArrayList<EstabelecimentoBean>();
	List<EstabelecimentoBean> listaPesquisa         = new ArrayList<EstabelecimentoBean>();
	List<EstabelecimentoBean> listaEstabelecimentos = new ArrayList<EstabelecimentoBean>();
	List<EstabelecimentoBean> listaArea             = new ArrayList<EstabelecimentoBean>();
	List<EstabelecimentoBean> listaImg              = new ArrayList<EstabelecimentoBean>();
	List<ImagenBean>          lista				    = new ArrayList<ImagenBean>();
	List<ImagenBean> 		  listaImagem  			= new ArrayList<ImagenBean>();
	List<TipoEstabelecimento> listaSegmento			= new ArrayList<TipoEstabelecimento>();
	EstabelecimentoDAO 		  dao 					= new EstabelecimentoDAO();
	SegmentoDAO 			  segDAO; 
	List<ImagenBean>          fotos				    = new ArrayList<ImagenBean>();
	StreamedContent           imagem;
	List<StreamedContent>     testeLista = new ArrayList<StreamedContent>();
	List<EstabelecimentoBean> listaSugestaoNome;
	Integer                   idAutocomplete;
	String                    disabled = "true";
	boolean                   validar;
	CepWebService 			  cepWebService;
	int 					  cont = 0;
	String 					  isDisabled = "false";
	String                    isHabilita = "true";
	String 					  radioButton;
	List<SelectItem> 		  estados;
	BuscarPorCEP			  BuscarCep = new BuscarPorCEP();
	String 		              botao;
	String 					  msgObs;
	
	/**
	 * Construtor
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 */
	public EstabelecimentoMB() throws ClassNotFoundException, SQLException {
		listar();
		listaEmpresas();
		listarSegmento();
		isHabilita = "true";
		estabelecimento = new EstabelecimentoBean();
	}

	/**
	 * método resposável por listar todos estabelecimentos. 
	 * 
	 */
	public List<EstabelecimentoBean> listaEmpresas()
			throws ClassNotFoundException {

		EstabelecimentoDAO dao = new EstabelecimentoDAO();
		listaEstabelecimentos = dao.listaEstabelecimentos();
		
		return listaEstabelecimentos;
	}
	
	/**
	 * método resposável por inserir observação quando for inativo.
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 * 
	 */
	public void inserirObservacao(ActionEvent event) throws ClassNotFoundException, SQLException{
		
		msgObs =  dao.carregarMsgObs(mostrarEstabelecimento.getId());
		Date data = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		
		if(!estabelecimento.getObsInativo().equals("") && estabelecimento.getObsInativo() != null){
			if(!msgObs.equals("")){
				
				msgObs = msgObs + "\n" + sdf.format(data).toString() + " : " + estabelecimento.getObsInativo() + "\n";
				dao.inserirObs(msgObs, mostrarEstabelecimento.getId());
				
			}else{
				msgObs = sdf.format(data).toString() + " : " + estabelecimento.getObsInativo() + "\n";
				dao.inserirObs(msgObs , mostrarEstabelecimento.getId());
			}
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
					"Observação gravada com sucesso.","");
				FacesContext.getCurrentInstance().addMessage(null, message);
		}else{
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
					"Campo observação é obrigatório.","");
				FacesContext.getCurrentInstance().addMessage(null, message);
		}
		
	}
	
	/**
	 * método resposável por carregar mensagem de observação.
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 * 
	 */
	public void carregaMsgObs() throws ClassNotFoundException, SQLException{
		
		msgObs = dao.carregarMsgObs(mostrarEstabelecimento.getId());
		
	}
	
	
	/**
	 * método resposável por inserir um estabelecimento na TbEstabelecimento. 
	 * 
	 */
	public void inserirEstabelecimento() {
		
		boolean verifica;
		Validar valida = new Validar();
		TipoEstabelecimento tipoSegmento = new TipoEstabelecimento();
		verifica = valida.validarEmpresa(estabelecimento);
		
		Date data = new Date();
		SimpleDateFormat dataAtual = new SimpleDateFormat("dd/MM/yyyy");
		
		if(verifica == true){
			
			tipoSegmento =  segDAO.listarPorId(Integer.parseInt(estabelecimento.getArea()));
			estabelecimento.setTipoEstabelecimento(tipoSegmento);
			estabelecimento.setIsAtivo("false");
			estabelecimento.setData(dataAtual.format(data).toString());
			estabelecimento.setObsInativo("");
			
			dao.inserir(estabelecimento);
			isDisabled = "true";
			isHabilita = "false";
			
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,
					"Estabelecimento Cadastrado com Sucesso.","");
				FacesContext.getCurrentInstance().addMessage(null, message);
		}else{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
					"Há campos obrigatórios a serem preenchidos.","");
				FacesContext.getCurrentInstance().addMessage(null, message);

		}
	}
	
	/**
	 * método resposável por habilitar botão pra inserir novo estabelecimento. 
	 * 
	 */
	public void novoEstabelecimento(){
		estabelecimento = new EstabelecimentoBean();
		isHabilita = "true";
		isDisabled = "false";
	}
	
	/**
	 * método resposável por criar uma  nova instância do objeto e fazer 
	 * o redirecinamneto sempre que alterar de aba. 
	 * 
	 */
	public String abaPesquisar(){
		estabelecimento = new EstabelecimentoBean();
		return "/pesquisa/pesquisa_fragmento.xhtml?faces-redirect=true";
	}
	
	/**
	 * método resposável por criar uma  nova instância do objeto e fazer 
	 * o redirecinamneto sempre que alterar de aba. 
	 * 
	 */
	public String abaEstabelecimento(){
		estabelecimento = new EstabelecimentoBean();
		isHabilita = "true";
		isDisabled = "false";
		listarSegmento();
		return "/cadastro/cadastroEmpresa.xhtml?faces-redirect=true";
	}
	
	/**
	 * método resposável por converter e inserir uma imagem na TbImagem.
	 * 
	 */
	public void inserirImagem(FileUploadEvent event){
		
		// Instância objetos
		ImagemDAO dao = new ImagemDAO();
		ImagenBean im = new ImagenBean();
		
		// Cria um arquivo UploadFile, para receber o arquivo do evento
		UploadedFile arq = event.getFile();
		
		
		// Transformar a imagem em bytes para salvar em banco de dados
		byte[] bimagem = event.getFile().getContents();
		im.setArquivo(bimagem);
		im.setNome(arq.getFileName());
		
		if(estabelecimento.getId() != null){
			im.setEmpresa(estabelecimento);
		}else{
			im.setEmpresa(estab);
		}
		
		dao.inserirImagem(im);
	
		System.out.println(event.getFile().getFileName());
		FacesMessage msg = new FacesMessage("Sucesso ", event.getFile()
				.getFileName() + " foi anexado corretamente.");
		FacesContext.getCurrentInstance().addMessage(null, msg);
		
	}
	
	/**
	 * método resposável por carregar as imagens da TbImagem e colocar em uma pasta temporária.  
	 * 
	 */
	public void listaFotosEstabelecimento() {

		ImagemDAO cadDao = new ImagemDAO();
		try {

			ServletContext sContext = (ServletContext) FacesContext
					.getCurrentInstance().getExternalContext().getContext();
			
			fotos = cadDao.getImagem(estab.getId());
			File folder = new File(sContext.getRealPath("/temp"));

			if (!folder.exists())
				folder.mkdirs();
			
			for (ImagenBean f : fotos) {
				String nomeArquivo = f.getId() + ".jpg";
				String arquivo = sContext.getRealPath("/temp") + File.separator
						+ nomeArquivo;
				criaArquivo(f.getArquivo(), arquivo);
			}

		} catch (Exception ex) {

			ex.printStackTrace();
		}
	}
	
	/**
	 * método resposável por listar todos estabelecimentos, menu lista de estabelecimento. 
	 * 
	 */
	public String listaDeEstabelecimentos()
			throws ClassNotFoundException {
		
		EstabelecimentoDAO dao = new EstabelecimentoDAO();
		listaEstabelecimentos = dao.listaEstabelecimentos();
		
		return "/cadastro/listaEstabelecimentos.xhtml?faces-redirect=true";
	}
	
	/**
	 * método resposável por inserir um vídeo.  
	 * 
	 */
	public void inserirVideo(){
		
		criarDiretorioVideo();
		//TODO: falta implementar
		
	}
	
	/**
	 * método resposável por criar um diretório pra armazenar os vídeos inseridos.  
	 * 
	 */
	public void criarDiretorioVideo() {
		
		String novoDiretorio = "videos_casamento";
	    String nomeDiretorio = null;   
	    String separador = java.io.File.separator;   
	    try {       
	         nomeDiretorio = "/home/clima/Videos" + separador + novoDiretorio;   
	         if (!new File(nomeDiretorio).exists()) { // Verifica se o diretório existe.   
	             (new File(nomeDiretorio)).mkdir();   // Cria o diretório
	             System.out.println("criado");  
	         }else{
	        	 System.out.println("existe");
	         }
	    } catch (Exception ex) {   
	         System.out.println("erro");   
	    }  
	}  
	
	/**
	 * método resposável por criar arquivo pra salvar imagens carregadas do banco e já convertidas.  
	 * 
	 */
		private void criaArquivo(byte[] bytes, String arquivo) {

			FileOutputStream fos;

			try {
				fos = new FileOutputStream(arquivo);
				fos.write(bytes);
				fos.flush();
				fos.close();

			} catch (FileNotFoundException ex) {
				ex.printStackTrace();
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
	
	/**
	 * método resposável por buscar endereço pelo CEP.
	 * 
	 */
	public void buscarEndereco(){
		
		if(!estabelecimento.getCep().equals("") && estabelecimento.getCep() != null ){
			cepWebService = BuscarCep.busca(estabelecimento.getCep());
			estabelecimento.setBairro(cepWebService.getBairro());
			estabelecimento.setCidade(cepWebService.getCidade());
			estabelecimento.setRua(cepWebService.getLogradouro());
		}else{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
					"É necessário preencher campo CEP pra executar a Busca.","É necessário preencher campo CEP pra executar a Busca.");
			FacesContext.getCurrentInstance().addMessage(null, message);
		}
		
	}
	
	/**
	 * método resposável por buscar endereço pelo CEP.
	 * 
	 */
	public void buscarEnderecoAlterar(){
					
		if(!mostrarEstabelecimento.getCep().equals("") && mostrarEstabelecimento.getCep() != null){
			cepWebService = BuscarCep.busca(mostrarEstabelecimento.getCep());
			mostrarEstabelecimento.setBairro(cepWebService.getBairro());
			mostrarEstabelecimento.setCidade(cepWebService.getCidade());
			mostrarEstabelecimento.setRua(cepWebService.getLogradouro());
		}else{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
					"É necessário preencher campo CEP pra executar a Busca.","É necessário preencher campo CEP pra executar a Busca.");
			FacesContext.getCurrentInstance().addMessage(null, message);
		}
		
	}
	
	/**
	 * método resposável por alterar endereço.
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 * 
	 */
	public void alterarEndereco() throws ClassNotFoundException, SQLException{
		
		dao.alterarEnderecoEstabelecimento(mostrarEstabelecimento);
	}

	/**
	 * método resposável por listar todos os ramos. 
	 * 
	 */
	public void listar() throws ClassNotFoundException, SQLException {
		listaEstabelecimento = dao.listar();
	}
	
	/**
	 * método resposável por listar todas as áreas. 
	 * 
	 */
	public void listaAreas() throws ClassNotFoundException, SQLException {
		
		listaArea = dao.pesquisarPorArea(estabelecimento.getArea());
		
		if (!listaArea.isEmpty()) {
			disabled = "false";
		}
	}
	
	/**
	 * método resposável realizar o auoComplete por nome. 
	 * 
	 */
	public List<EstabelecimentoBean> completeNome(String query) {

		listaSugestaoNome = new ArrayList<EstabelecimentoBean>();

		for (EstabelecimentoBean p : listaNomeAutoComplete) {
			if ((p.getNome().toLowerCase().contains(query)))
				listaSugestaoNome.add(p);
		}

		return listaSugestaoNome;
	}
	 
	
	/**
	 * método resposável por realizar as pesquisasde estabelecimantos. 
	 * 
	 */
	public String pesquisar() throws ClassNotFoundException, SQLException {
		
		resultadoPesquisa = new ArrayList<EstabelecimentoBean>();
		resultadoPesquisaAtivos = new ArrayList<EstabelecimentoBean>();
		validar = false;
		
		//buscar por Id da empresa
		if(!estabelecimento.getArea().equals("") && estabelecimento.getArea() != null){
				
			if(!estabelecimento.getEmpresa().equals("") && estabelecimento.getEmpresa() != null){
				EstabelecimentoBean resultadoPorEmpresa = dao.pequisarPorId(Integer.parseInt(estabelecimento.getEmpresa()));
				resultadoPesquisa.add(resultadoPorEmpresa);
				validar = true;
			}else{
				FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
						"Ao selecionar um segmento é necessário escolher uma empresa.","");
					FacesContext.getCurrentInstance().addMessage(null, message);
					
					validar = true;
			}
				
		}
		
		//busca por Nome
		if(!estabelecimento.getNome().equals("") && estabelecimento.getNome() != null){
			resultadoPesquisa = dao.pesquisaPorNome(estabelecimento.getNome());
			validar = true;
		}
		
		//if(!estabelecimento.getId().equals("") && estabelecimento.getId() == null){
		// busca por CNPJ
		if (!estabelecimento.getCnpj().equals("") && estabelecimento.getCnpj() != null) {
			String cnpj = estabelecimento.getCnpj().replace(".","");
			cnpj = cnpj.replace("/", "");
			cnpj = cnpj.replace("-", "");
			
			resultadoPesquisa = dao.pesquisaPorCNPJ(cnpj);
			validar = true;
		}
	
		// busca por CEP
		if (!estabelecimento.getCep().equals("") && estabelecimento.getCep() != null) {
			String cep = estabelecimento.getCep().replace(".", "");
			cep = cep.replace("-", "");
			
			resultadoPesquisa = dao.pesquisaPorCEP(cep);
			validar = true;
		}
	
		// busca por Rua
		if (!estabelecimento.getRua().equals("") && estabelecimento.getRua() != null) {
			 resultadoPesquisa = dao.pesquisaPorRua(estabelecimento.getRua());
			 validar = true;
		}
	
		// busca por Cidade
		if (!estabelecimento.getCidade().equals("") && estabelecimento.getCidade() != null) {
			 resultadoPesquisa = dao.pesquisaPorCidade(estabelecimento.getCidade());
			 validar = true;
		}
		
		if (validar == false) {
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
				"Preencher um campo para dar segmento a pesquisa!","");
			FacesContext.getCurrentInstance().addMessage(null, message);

			return "";
		}
		
		if(!resultadoPesquisa.isEmpty()){
			
			for(EstabelecimentoBean estAtivo : resultadoPesquisa){
					if(estAtivo.getIsAtivo().equals("false")){
						resultadoPesquisaAtivos.add(estAtivo);
					}
			}
			
			if(resultadoPesquisaAtivos.isEmpty()){
				FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
						"Os usuários cadastrados com essas informações estão inativos no momento!","");
					FacesContext.getCurrentInstance().addMessage(null, message);
					
					return "";
			}
		}
		return "";
	}
	
	/**
	 * método resposável por listar imagens.
	 * 
	 */
	public void listarImgs() throws SQLException, ClassNotFoundException {
		
		ImagemDAO cadDao = new ImagemDAO();
		listaImagem = cadDao.getImagem(estab.getId());
		testeLista = new ArrayList<StreamedContent>();
		
		for (ImagenBean i : listaImagem) {

			InputStream is = new ByteArrayInputStream(i.getArquivo());
			imagem = new DefaultStreamedContent(is, "image/jpg");
			testeLista.add(imagem);
			
		}
	}
	
	/**
	 * Método responsável por listar todos os segmentos e apresentar na tela
	 */
	public void listarSegmento(){
		segDAO = new SegmentoDAO();
		listaSegmento = segDAO.listaTipoSegmento();
		
	}
	
	/**
	 * Método responsável por alterar estabelecimento
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 */
	public void alterarEstabelecimento(CellEditEvent event) throws ClassNotFoundException, SQLException{
		
	    Object oldValue = event.getOldValue();  
	    Object newValue = event.getNewValue();  
		
		UIComponent form = (UIComponent) event.getColumn();
		UIComponent component = event.getComponent();
		UIInput input= (UIInput) component.findComponent("hiddenId");
		
		Integer id = (Integer) input.getValue();
		String valor = (String) event.getNewValue();
		dao.alterarEstabelecimento(form.getId(), valor, id);
		
		  if(newValue != null && !newValue.equals(oldValue)) {  
	            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Valor alterado com sucesso.", "Valor antigo: " + oldValue + ", Novo Valor:" + newValue);  
	            FacesContext.getCurrentInstance().addMessage(null, msg);  
	        }  
	}
	
	/**
	 * Método responsável por desativar estabelecimento.
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 */
	public void desativarEstabelecimento(ActionEvent event) throws ClassNotFoundException, SQLException{
		
		UIComponent component = event.getComponent();
		UIInput input= (UIInput) component.findComponent("hiddenId");
		UIInput hiddenAtivo = (UIInput) component.findComponent("hiddenAtivo");
		
		Integer id = (Integer) input.getValue();
		String  isAtivo = (String) hiddenAtivo.getValue();
		
		if(isAtivo == null || isAtivo.equals("false")){
			isAtivo = "true";
			dao.desativarPorId(id, isAtivo);
		}else{
			isAtivo = "false";
			dao.desativarPorId(id, isAtivo);
		}
		
		listaDeEstabelecimentos();
	}
	
	/**
	 * Getter para estabelecimento.
	 *
	 * @return estabelecimento
	 */
	public EstabelecimentoBean getEst() {
		return estabelecimento;
	}
	
	/**
	 * Setter para estabelecimento.
	 *
	 * @param estabelecimento estabelecimento
	 */
	public void setEstabelecimentoBean(EstabelecimentoBean estabelecimento) {
		this.estabelecimento = estabelecimento;
	}
	
	
	/**
	 * Getter para resultadoPesquisa.
	 *
	 * @return resultadoPesquisa
	 */
	public List<EstabelecimentoBean> getListaPesquisa() {
		return resultadoPesquisaAtivos;
	}
	
	/**
	 * Setter para resultadoPesquisa.
	 *
	 * @param resultadoPesquisa resultadoPesquisa
	 */
	public void setListaPesquisa(List<EstabelecimentoBean> resultadoPesquisa) {
		this.resultadoPesquisa = resultadoPesquisa;
	}
	
	public String getDisabled() {
		return "false";
	}
	
	public void setDisabled(String disabled) {
		this.disabled = "false";
	}
	
	/**
	 * Getter para estabelecimento.
	 *
	 * @return estabelecimento
	 */
	public EstabelecimentoBean getEstabelecimento() {
		return estabelecimento;
	}
	
	/**
	 * Setter para estabelecimento.
	 *
	 * @param estabelecimento estabelecimento
	 */
	public void setEstabelecimento(EstabelecimentoBean estabelecimento) {
		this.estabelecimento = estabelecimento;
	}
	
	/**
	 * Getter para listaSugestaoNome.
	 *
	 * @return listaSugestaoNome
	 */
	public List<EstabelecimentoBean> getSugestao() {
		return listaSugestaoNome;
	}
	
	/**
	 * Setter para listaSugestaoNome.
	 *
	 * @param listaSugestaoNome listaSugestaoNome
	 */
	public void setSugestao(List<EstabelecimentoBean> listaSugestaoNome) {
		this.listaSugestaoNome = listaSugestaoNome;
	}
	
	/**
	 * Getter para listaNomeAutoComplete.
	 *
	 * @return listaNomeAutoComplete
	 */
	public List<EstabelecimentoBean> getPlayers() {
		return listaNomeAutoComplete;
	}
	
	/**
	 * Setter para listaNomeAutoComplete.
	 *
	 * @param listaNomeAutoComplete listaNomeAutoComplete
	 */
	public void setPlayers(List<EstabelecimentoBean> nomes) {
		this.listaNomeAutoComplete = nomes;
	}
	
	/**
	 * Getter para listaEstabelecimentos.
	 *
	 * @return listaEstabelecimentos
	 */
	public List<EstabelecimentoBean> getListaEstabelecimentos() {
		return listaEstabelecimentos;
	}
	
	/**
	 * Setter para listaEstabelecimentos.
	 *
	 * @param listaEstabelecimentos listaEstabelecimentos
	 */
	public void setListaEstabelecimentos(
			List<EstabelecimentoBean> listaEstabelecimentos) {
		this.listaEstabelecimentos = listaEstabelecimentos;
	}
	
	/**
	 * Getter para listaArea.
	 *
	 * @return listaArea
	 */
	public List<EstabelecimentoBean> getListaArea() {
		return listaArea;
	}
	
	/**
	 * Setter para listaArea.
	 *
	 * @param listaArea listaArea
	 */
	public void setListaArea(List<EstabelecimentoBean> listaArea) {
		this.listaArea = listaArea;
	}
	
	/**
	 * Getter para lista.
	 *
	 * @return lista
	 */
	public List<ImagenBean> getLista() {
		return lista;
	}
	
	/**
	 * Setter para lista.
	 *
	 * @param lista lista
	 */
	public void setLista(List<ImagenBean> lista) {
		this.lista = lista;
	}
	
	/**
	 * Getter para imagem.
	 *
	 * @return imagem
	 */
	public StreamedContent getImagem() {
		return imagem;
	}
	
	/**
	 * Setter para imagem.
	 *
	 * @param imagem imagem
	 */
	public void setImagem(StreamedContent imagem) {
		this.imagem = imagem;
	}
	
	/**
	 * Getter para listaImagem.
	 *
	 * @return listaImagem
	 */
	public List<ImagenBean> getListaImagem() {
		return listaImagem;
	}
	
	/**
	 * Setter para listaImagem.
	 *
	 * @param listaImagem listaImagem
	 */
	public void setListaImagem(List<ImagenBean> listaImagem) {
		this.listaImagem = listaImagem;
	}
	
	/**
	 * Getter para testeLista.
	 *
	 * @return testeLista
	 */
	public List<StreamedContent> getTesteLista() {
		return testeLista;
	}
	
	/**
	 * Getter para estab.
	 *
	 * @return estab
	 */
	public EstabelecimentoBean getEstab() {
		return estab;
	}
	
	/**
	 * Setter para estab.
	 *
	 * @param estab estab
	 */
	public void setEstab(EstabelecimentoBean estab) {
		this.estab = estab;
	}
	
	/**
	 * Setter para testeLista.
	 *
	 * @param testeLista testeLista
	 */
	public void setTesteLista(List<StreamedContent> testeLista) {
		this.testeLista = testeLista;
	}
	
	/**
	 * Getter para cepWebService.
	 *
	 * @return cepWebService
	 */
	public CepWebService getCepWebService() {
		return cepWebService;
	}
	
	/**
	 * Setter para cepWebService.
	 *
	 * @param cepWebService cepWebService
	 */
	public void setCepWebService(CepWebService cepWebService) {
		this.cepWebService = cepWebService;
	}
	
	/**
	 * Getter para isDisabled.
	 *
	 * @return isDisabled
	 */
	public String getIsDisabled() {
		return isDisabled;
	}
	
	/**
	 * Setter para isDisabled.
	 *
	 * @param isDisabled isDisabled
	 */
	public void setIsDisabled(String isDisabled) {
		this.isDisabled = isDisabled;
	}
	
	/**
	 * Getter para isHabilita.
	 *
	 * @return isHabilita
	 */
	public String getIsHabilita() {
		return isHabilita;
	}
	
	/**
	 * Setter para isHabilita.
	 *
	 * @param isHabilita isHabilita
	 */
	public void setIsHabilita(String isHabilita) {
		this.isHabilita = isHabilita;
	}

	/**
	 * Getter para fotos.
	 *
	 * @return fotos
	 */
	public List<ImagenBean> getfotos() {
		return fotos;
	}
	
	/**
	 * Setter para fotos.
	 *
	 * @param fotos fotos
	 */
	public void setfotos(List<ImagenBean> fotos) {
		this.fotos = fotos;
	}
	
	/**
	 * Getter para radioButton.
	 *
	 * @return radioButton
	 */
	public String getRadioButton() {
		return radioButton;
	}
	
	/**
	 * Setter para radioButton.
	 *
	 * @param radioButton radioButton
	 */
	public void setRadioButton(String radioButton) {
		this.radioButton = radioButton;
	}
	
	/**
	 * Getter para listaSegmento.
	 *
	 * @return listaSegmento
	 */
	public List<TipoEstabelecimento> getListaSegmento() {
		return listaSegmento;
	}
	
	/**
	 * Getter para estados.
	 *
	 * @return estados
	 */
	public List<SelectItem> getEstados() {
		
		estados = new ArrayList<SelectItem>();
		estados.add(new SelectItem("Acre", "AC"));
		estados.add(new SelectItem("Alagoas", "AL"));
		estados.add(new SelectItem("Amapa", "AP"));
		estados.add(new SelectItem("Amazonas", "AM"));
		estados.add(new SelectItem("Bahia", "BA"));
		estados.add(new SelectItem("Ceara", "CE"));
		estados.add(new SelectItem("Distrito Federal", "DF"));
		estados.add(new SelectItem("Esperito Santo", "ES"));
		estados.add(new SelectItem("Goias", "GO"));
		estados.add(new SelectItem("Maranhao", "MA"));
		estados.add(new SelectItem("Mato Grosso", "MT"));
		estados.add(new SelectItem("Mato Grosso do Sul", "MS"));
		estados.add(new SelectItem("Minas Gerias", "MG"));
		estados.add(new SelectItem("Para", "PA"));
		estados.add(new SelectItem("Paraiba", "PB"));
		estados.add(new SelectItem("Parana", "PR"));
		estados.add(new SelectItem("Pernambuco", "PE"));
		estados.add(new SelectItem("Piaui", "PI"));
		estados.add(new SelectItem("Rio de Janeiro", "RJ"));
		estados.add(new SelectItem("Rio Grande do Norte", "RN"));
		estados.add(new SelectItem("Rio Grande do Sul", "RS"));
		estados.add(new SelectItem("Rondonia", "RO"));
		estados.add(new SelectItem("Roraima", "RR"));
		estados.add(new SelectItem("Santa Catarina", "SC"));
		estados.add(new SelectItem("Sao Paulo", "SP"));
		estados.add(new SelectItem("Sergipe", "SE"));
		estados.add(new SelectItem("Tocantis", "TO"));
		
		return estados;
	}

	public EstabelecimentoBean getMostrarEstabelecimento() {
		return mostrarEstabelecimento;
	}

	public void setMostrarEstabelecimento(EstabelecimentoBean mostrarEstabelecimento) {
		this.mostrarEstabelecimento = mostrarEstabelecimento;
	}

	public String getBotao() {
		return botao;
	}

	public List<EstabelecimentoBean> getResultadoPesquisaAtivos() {
		return resultadoPesquisaAtivos;
	}

	public void setResultadoPesquisaAtivos(
			List<EstabelecimentoBean> resultadoPesquisaAtivos) {
		this.resultadoPesquisaAtivos = resultadoPesquisaAtivos;
	}

	public String getMsgObs() {
		return msgObs;
	}

	public void setMsgObs(String msgObs) {
		this.msgObs = msgObs;
	}

}


